package com.wangqingbo.myspringboot212.dao;

import com.wangqingbo.myspringboot212.entity.ProjectInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 数据库 操作项目类的接口
 */
public interface ProjectInfoMapper {

	/**
	 * 保存项目信息
	 * @param project 项目对象
	 * @return 保存成功的数据条数
	 */
	public int saveProjectInfo(ProjectInfo project);
	
	/**
	 * 查询所有的项目信息
	 * @return 项目列表
	 */
	public List<ProjectInfo> getAllProjects();
	
	/**
	 * 根据id查询项目信息
	 * @param projectId 项目id
	 * @return 一个项目对象
	 */
	public ProjectInfo getProjectInfoById(String projectId);
	
	/**
	 * 更新项目对象
	 * @param prj 项目对象
	 * @return 更新成功的数据条数
	 */
	public int updateProjectInfo(ProjectInfo prj);
	
	/**
	 * 根据id删除数据
	 * @param projectId 项目id
	 * @return 删除成功的数据条数
	 */
	public int delProjectById(String projectId);

	/**
	 * 根据参数查询项目信息，要分页查询
	 * @param projectName 项目名称,参数名前使用注解@Param("projectName")，
	 *                       注解的名称用于sql语句中接收参数
	 * @param projectCode 项目编码
	 * @param offset 数据在表中的偏移量，用于分页
	 * @param pageSize 每页显示的数据条数，用于分页
	 * @return 符合条件的项目列表
	 */
	public List<ProjectInfo> getProjectInfoByParamsPage(@Param("projectName") String projectName, @Param("projectCode")String projectCode, @Param("offset")int offset, @Param("pageSize")int pageSize);

	/**
	 * 根据参数查询项目信息的数据条数，供分页来使用
	 * @param projectName 项目名称,参数名前使用注解@Param("projectName")，
	 *                       注解的名称用于sql语句中接收参数
	 * @param projectCode 项目编码
	 * @return 符合条件的项目列表
	 */
	public int getProjectInfoCountByParamsPage(@Param("projectName") String projectName, @Param("projectCode")String projectCode);

}
